#ifndef __INCcolorchange
#define __INCcolorchange

#ifdef __cplusplus
extern "C" {
#endif
#include "basic_datatype.h"
 UCHAR global_alpha;
/*
#define A(color)				((((color >> 24) & 0xff) >> 4) & (global_alpha)) */
#define R(color)				((((color) & 0x000f00) << 12) | (((((color) & 0x000f00) / 2) << 8) & (0x0f0000)))	// (((color >> 16) & 0xff) >> 4)
#define G(color)				((((color) & 0x0000f0) << 8) | (((((color) & 0x0000f0) / 2) << 4) & (0x000f00)))	// (((color >> 8) & 0xff) >> 4)
#define B(color)				((((color) & 0x00000f) << 4) | ((((color) & 0x00000f) / 2) & (0x00000f)))			// (((color) & 0xff) >> 4)
#define RGB4444to8888(color)	(((global_alpha << 24) & 0xff000000) | (R(color)) | (G(color)) | (B(color)))
#if (GRAPHICS_COLOR_MODE == 32)
#define RGB8888to4444(color)	(((global_alpha << 24) & 0xff000000) | (color & 0x00ffffff))
#elif (GRAPHICS_COLOR_MODE == 16)
#define A4444(color)			((color & 0xf000) >> 12)
#define R4444(color)			((color & 0x0f00) >> 8)
#define G4444(color)			((color & 0x00f0) >> 4)
#define B4444(color)			(color & 0x000f)
#define RGB8888to4444(color)	(((global_alpha << 12) & 0xf000) | (color & 0x0fff))
#elif (GRAPHICS_COLOR_MODE == 15)
#define A1555					((0x1) << 15)
#define R1555(color)			(((((color) & 0x00ff0000) >> 19) & 0xff) << 10)
#define G1555(color)			(((((color) & 0x0000ff00) >> 11) & 0xff) << 5)
#define B1555(color)			((((color) & 0x000000ff) >> 3) & 0xff)
#define RGB8888to4444(color)	(A1555 | R1555(color) | G1555(color) | B1555(color))
#else
#err
#define A1555					((0x1) << 15)
#define R1555(color)			(((((color) & 0x00ff0000) >> 19) & 0xff) << 10)
#define G1555(color)			(((((color) & 0x0000ff00) >> 11) & 0xff) << 5)
#define B1555(color)			((((color) & 0x000000ff) >> 3) & 0xff)
#define RGB8888to4444(color)	(A1555 | R1555(color) | G1555(color) | B1555(color))
#endif

#ifdef __cplusplus
}
#endif

#endif /* __INCcolorchange */
